package Thread;

import java.util.Scanner;

// 创建两个线程，一个调用 wait,一个调用 notify
public class Demo17 {
    // 这个对象用来作为锁对象
    private static Object locker = new Object();

    public static void main(String[] args) {
        Thread waitTask = new Thread(() -> {
            synchronized (locker) {
                System.out.println("wait begin.");
                try {
                    locker.wait();
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                System.out.println("wait end.");
            }
        });
        waitTask.start();

        // 创建一个用来通知/唤醒的进程
        Thread notifyTask = new Thread(() -> {
            // 让用户来通知，用户输入内容后再执行通知
            Scanner scanner = new Scanner(System.in);
            System.out.println("请输入任意内容：");
            // next会阻塞，直到用户真正输入之后
            scanner.next();

            synchronized (locker) {
                System.out.println("notify begin.");
                locker.notify();
                System.out.println("notify end.");
            }
        });
        notifyTask.start();
    }
}
